﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed;                 // 敌人的移动速度
    private Vector2 direction;          // 受击时的移动方向
    private bool isHit;                 // 是否正在受击状态
    private AnimatorStateInfo info;     // 动画状态信息

    private Animator animator;          // 敌人的主动画控制器
    private Animator hitAnimator;       // 敌人的受击特效动画控制器
    new private Rigidbody2D rigidbody;  // 敌人的刚体组件

    void Start()
    {
        // 获取组件的引用
        animator = transform.GetComponent<Animator>();
        hitAnimator = transform.GetChild(0).GetComponent<Animator>(); // 假设受击动画控制器在子对象中
        rigidbody = transform.GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        info = animator.GetCurrentAnimatorStateInfo(0); // 获取当前动画状态信息
        if (isHit)
        {
            rigidbody.velocity = direction * speed; // 根据受击方向设置速度
            if (info.normalizedTime >= .6f)
                isHit = false; // 当动画播放超过60%时结束受击状态
        }
    }

    // 外部调用，使敌人进入受击状态
    public void GetHit(Vector2 direction)
    {
        transform.localScale = new Vector3(-direction.x, 1, 1); // 根据受击方向调整朝向
        isHit = true; // 进入受击状态
        this.direction = direction; // 设置受击方向
        animator.SetTrigger("Hit"); // 播放主动画的受击动画状态
        hitAnimator.SetTrigger("Hit"); // 播放受击动画控制器的受击动画状态
    }
}

